02. 迷你项目:蒙特卡洛方法 (OpenAI Gym-BlackjackEnv)

OpenAI Gym:BlackjackEnv

在这节课,你将编写代码来指导智能体玩二十一点。

请在该教科书的第 5.1 个示例中详细了解二十一点游戏。

完成后,请查看相应的 GitHub 文件,并阅读 BlackjackEnv 类的注释部分。(虽然你需要理解所有代码的原理,但是请阅读注释部分以了解环境的动态特性。)为了进行阐释,我们还在下方摘录了环境说明:

    """21点规则简介

    二十一点是一种扑克牌游戏,目标是尽量使手中牌的总点数达到 21 点,或是接近 21 点,但不能超过,然后与庄家的点数进行比较。人头牌(J、Q、K)的点数是 10。王牌可以是 11 点或 1 点,11 点时“可用”。这种游戏的整副牌是有限的(或者可以替换)。游戏开始时,每个玩家和庄家的一张牌朝上,另一张牌朝下。玩家可以请求更多的牌 (hit=1) 并决定何时停止请求牌(stick=0) 或者超过 21 点(爆牌)。玩家停止请求牌后,庄家翻开扣着的牌,并抽牌,直到所有点数之和是 17 点或大于 17 点。如果庄家爆牌,玩家获胜。

    如果玩家或庄家都没爆牌,结果(输赢或持平)由谁的点数更接近 21 点来确定。赢了的奖励是 +1,平局的奖励是 0,输了的奖励是 -1。

    包含以下三种状态:玩家的当前点数之和,庄家显示的一张牌(1-10,其中王牌是 1),以及玩家是否拥有可使用的王牌(0 或 1)。

    此规则对应于《强化学习引论》(作者:Sutton 和 Barto,1998 年)第 5.1 个示例中介绍的二十一点问题。
    http://incompleteideas.net/book/the-book.html 
    """